package main

import "fmt"

// 定义接口
type Parse interface {
	Parse(body []byte) (interface{}, error)
}

// 定义具体实现类
type JsonParse struct{}

func (json *JsonParse) Parse(body []byte) (interface{}, error) {
	return body, nil
}

type XmlParse struct{}

func (xml *XmlParse) Parse(body []byte) (interface{}, error) {
	return body, nil
}

// 定义工厂类
type ParseFactory struct {
}

// 定义创建具体实现类的方法

func (f *ParseFactory) CreateParse(name string) Parse {
	switch name {
	case "json":
		return &JsonParse{}
	case "xml":
		return &XmlParse{}
	default:
		return nil
	}
}

func main() {
	parseFactory := &ParseFactory{}
	jsonParse := parseFactory.CreateParse("json")
	xmlParse := parseFactory.CreateParse("xml")
	fmt.Print(jsonParse, xmlParse)
}
